﻿// 702 最大矩形面积.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//


/*
http://oj.daimayuan.top/course/7/problem/508
有一张 n列的网格图，每列有一些格子被小蜗从底向上涂了色。现在给你每一列被涂色的格子的高度 ai
，请你求出被涂色的格子组成的最大矩形的面积。

输入格式
第一行一个整数 n，表示总列数。

接下来一行 n个数 a1,a2,...,an。

输出格式
输出一行一个数，表示最大面积。 

样例输入
5
1 2 5 3 4
样例输出
9
样例解释
第 3、4、5列可以组成 3×3的矩形，面积为 9。

数据规模
对于 100%的数据，保证 1≤n≤2×105,1≤ai≤109。
*/

#include <iostream>
#include <deque>
using namespace std;

typedef long long  LL;
const int N = 200010;
int arr[N];
deque<int> q;
int qf[N];
int qb[N];
int  n;


int main()
{
	cin >> n;
	for (int i = 1; i <= n; i++) cin >> arr[i];
	q.push_back(0);  
	for (int i = 1; i <= n; i++) {
		while (!q.empty() && arr[q.back()] >= arr[i]) q.pop_back();
		qf[i] = q.back();
		q.push_back(i);
	}

	q.clear(); q.push_back(n + 1);
	for (int i = n; i >= 1; i--) {
		while (!q.empty() && arr[q.back()] >= arr[i]) q.pop_back();
		qb[i] = q.back();
		q.push_back(i);
	}

	long long ans = 0;
	for (int i = 1; i < n; i++) {
		int l = qf[i] + 1; int r = qb[i] - 1;
		ans = max(ans, 1LL*(r - l + 1) * arr[i]);
	}

	cout << ans << endl;

	return 0;
}
 